/**
 ****************************************************************************************************
 * @FileName   : led.h
 * @Author     : JiangZhongxun
 * @Version    : v1.0
 * @Date       : 2025-07-25
 * @Description: LED驱动代码
 * @license    : Copyright (C) 2025, JiangZhongxun, China, All Rights Reserved
 ****************************************************************************************************
 * @attention  :
 *
 ****************************************************************************************************
 */

#ifndef __LED_H_
#define __LED_H_

#include "./SYSTEM/sys/sys.h"

/* 引脚定义 */
#define LED0_GPIO_PORT GPIOB
#define LED0_GPIO_PIN GPIO_PIN_1
#define LED0_GPIO_CLK_ENABLE()                                                                                         \
    do                                                                                                                 \
    {                                                                                                                  \
        __HAL_RCC_GPIOB_CLK_ENABLE();                                                                                  \
    } while (0)

#define LED1_GPIO_PORT GPIOB
#define LED1_GPIO_PIN GPIO_PIN_0
#define LED1_GPIO_CLK_ENABLE()                                                                                         \
    do                                                                                                                 \
    {                                                                                                                  \
        __HAL_RCC_GPIOB_CLK_ENABLE();                                                                                  \
    } while (0)

/* LED端口定义 */
#define LED0(x)                                                                                                        \
    do                                                                                                                 \
    {                                                                                                                  \
        x ? HAL_GPIO_WritePin(LED0_GPIO_PORT, LED0_GPIO_PIN, GPIO_PIN_SET)                                             \
          : HAL_GPIO_WritePin(LED0_GPIO_PORT, LED0_GPIO_PIN, GPIO_PIN_RESET);                                          \
    } while (0)

#define LED1(x)                                                                                                        \
    do                                                                                                                 \
    {                                                                                                                  \
        x ? HAL_GPIO_WritePin(LED1_GPIO_PORT, LED1_GPIO_PIN, GPIO_PIN_SET)                                             \
          : HAL_GPIO_WritePin(LED1_GPIO_PORT, LED1_GPIO_PIN, GPIO_PIN_RESET);                                          \
    } while (0)

#define LED0_TOGGLE()                                                                                                  \
    do                                                                                                                 \
    {                                                                                                                  \
        HAL_GPIO_TogglePin(LED0_GPIO_PORT, LED0_GPIO_PIN);                                                             \
    } while (0)

#define LED1_TOGGLE()                                                                                                  \
    do                                                                                                                 \
    {                                                                                                                  \
        HAL_GPIO_TogglePin(LED1_GPIO_PORT, LED1_GPIO_PIN);                                                             \
    } while (0)

/**
 * @Name    led_init
 * @brief   LED初始化以及时钟使能
 * @param   None
 * @retval  None
 * @author  JiangZhongxun
 * @Data    2025-07-25
 */
void led_init(void);

#endif
